﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sofire.Data;

namespace SofireCodeGenerator.Core
{
    public abstract class SqlGeneratorBase
    {
        private QueryEngineBase _Engine;
        public QueryEngineBase Engine
        {
            get
            {
                return this._Engine;
            }
        }

        public SqlGeneratorBase(QueryEngineBase engine)
        {
            if(engine == null) throw new ArgumentNullException("engine");
            this._Engine = engine;
        }

        public abstract TableResult GetUserTables();
        public abstract TableResult GetUserViews();
        public abstract TableResult GetTableColumns(string tableName);
        public abstract TableResult GetEmptyTable(string tableName);
        public abstract string CreateSql(SqlOptions options);
    }
}
